﻿namespace Shot.Session
{
    /// <summary>
    /// Defines how a session manager should work.
    /// </summary>
    public interface ISessionManager
    {
        /// <summary>
        /// App Instance
        /// </summary>
        AppInstance Instance { get; set; }

        /// <summary>
        /// Unique session identifier
        /// </summary>
        string SessionKey { get; set; }

        /// <summary>
        /// Get a session value
        /// </summary>
        /// <param name="key"></param>
        /// <returns></returns>
        object Get(string key);

        /// <summary>
        /// Set a session value
        /// </summary>
        /// <param name="key"></param>
        /// <param name="value"></param>
        void Set(string key, object value);
    }
}
